iT邦幫忙

2024 iThome 鐵人賽

DAY 25
0
Software Development

六邊形戰士程式設計系列 第 25

D25 - MMORPG事件處理問題 壅塞控制篇

  • 分享至 

  • xImage
  •  

在 D21 到 D24 這幾天,老實說我們做的更像是 RPG 而不是 MMORPG。因為我們還一直沒有考慮到這些問題

  • 重點同步多個玩家的和伺服器的狀態
  • 保持絲滑的遊戲體驗
  • 自動紀錄玩家遊戲進度

如果依照一般 web 應用的三層式架構模式,在每一個事件發生當下,都馬上變更資料庫狀態並且給予回應,可以預想會產生災難性的後果...

因為同一個地圖、多個使用者的互動事件可能一秒就有上千上萬個,假設平均一秒來10000個請求,伺服器卻每秒卻只能處理5000個請求,就會造成嚴重的壅塞問題。

有時候即使像上圖一樣在整體系統架構上做調整,成效仍然有限,這是因為當許多事件很依賴同一個資料庫物件時,還是會無可避免的把傳輸延遲疊加起來,因此有些遊戲伺服器會有定時器機制來對效能做優化。用我們前面的地圖當例子,大概會是這樣子的

每一段時間,把許多事件匯總起來一起處理,處理完後一起對資料庫更新,並統一回應給客戶端,這樣就大幅降低成本最高的傳輸以及資料操作的延遲,並且能更充分的發揮伺服器計算效能,接下來預計會用RxJS來模擬以上的事件處理方式。


上一篇
D24 - MMORPG事件處理問題 視覺化篇
下一篇
D26 - MMORPG事件處理問題 動畫化篇
系列文
六邊形戰士程式設計30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言